Spring Data JPA কী?
Spring Data JPA হলো Spring ফ্রেমওয়ার্কের একটি অংশ, যা JPA (Java Persistence API) এর ওপর ভিত্তি করে ডেটাবেসের ডেটা অ্যাক্সেস অপারেশনকে সহজতর করে। এটি কম কোড লিখে CRUD (Create, Read, Update, Delete) অপারেশন করার জন্য উপযোগী এবং ডেটাবেসের সাথে কাজ করার জন্য একটি শক্তিশালী ইন্টারফেস সরবরাহ করে।
Spring Data JPA সেটআপ
Maven ডিপেনডেন্সি যোগ করা
Spring Data JPA এবং একটি এমবেডেড ডাটাবেস (যেমন H2) ব্যবহার করতে নিচের ডিপেনডেন্সিগুলো pom.xml এ যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Application.properties ফাইলে কনফিগারেশন
Spring Boot অ্যাপ্লিকেশনের ডাটাবেস কনফিগারেশন:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
Spring Data JPA এর বেসিক উদাহরণ
Entity ক্লাস তৈরি করা
Spring Data JPA-তে ডেটাবেস টেবিলের সাথে কাজ করতে @Entity অ্যানোটেশন ব্যবহার করে একটি ক্লাস তৈরি করা হয়।
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String email;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Repository ইন্টারফেস তৈরি করা
JpaRepository ইন্টারফেস এক্সটেন্ড করে ডেটাবেস অপারেশন সহজে সম্পন্ন করা যায়।
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface StudentRepository extends JpaRepository<Student, Long> {
List<Student> findByName(String name);
}
সার্ভিস ক্লাস তৈরি করা
@Service অ্যানোটেশন ব্যবহার করে সার্ভিস ক্লাসে ডেটাবেস অপারেশনগুলো ইমপ্লিমেন্ট করা হয়।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentService {
@Autowired
private StudentRepository repository;
public List<Student> getAllStudents() {
return repository.findAll();
}
public Student saveStudent(Student student) {
return repository.save(student);
}
public List<Student> getStudentsByName(String name) {
return repository.findByName(name);
}
}
Controller ক্লাস তৈরি করা
Spring MVC ব্যবহার করে ডেটা পরিচালনার জন্য একটি REST Controller তৈরি করা হয়।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/students")
public class StudentController {
@Autowired
private StudentService service;
@GetMapping
public List<Student> getAllStudents() {
return service.getAllStudents();
}
@PostMapping
public Student addStudent(@RequestBody Student student) {
return service.saveStudent(student);
}
@GetMapping("/search")
public List<Student> getStudentsByName(@RequestParam String name) {
return service.getStudentsByName(name);
}
}
Spring Boot অ্যাপ চালানো
Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশন ব্যবহার করা হয়:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDataJpaExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataJpaExampleApplication.class, args);
}
}
টেস্টিং REST API
Spring Boot অ্যাপ চালানোর পরে নিচের পদ্ধতিতে API টেস্ট করতে পারেন:
- GET
/students: সকল ছাত্রের তালিকা রিটার্ন করবে। POST
/students: একটি নতুন ছাত্র ডাটাবেসে সংযুক্ত করবে।
উদাহরণ ইনপুট:{ "name": "John Doe", "email": "john.doe@example.com" }- GET
/students/search?name=John Doe: নির্দিষ্ট নামের ছাত্রদের রিটার্ন করবে।
সারাংশ
Spring Data JPA স্প্রিং বুটে ডেটাবেস অপারেশন সহজ, দ্রুত এবং কার্যকর করে। এর অটোমেটিক কনফিগারেশন, ডেটা অ্যাক্সেসের সরলীকরণ এবং পুনর্ব্যবহারযোগ্য কোডের সুবিধা ডেভেলপারদের কাজকে আরও মসৃণ করে তোলে।
Read more